home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / misc / emu / ATUtilities.lha / ATUtilities / M2 / MOUSE.MOD < prev    next >
Text File  |  2000-09-26  |  1KB  |  77 lines

  1. (*$S- *)
  2. IMPLEMENTATION MODULE Mouse;
  3.  
  4. FROM SYSTEM  IMPORT BYTE,WORD,ADDRESS,ASSEMBLER;
  5. FROM GEM     IMPORT GDOSPtr,gdos,SystemMessagePtr,MouseButtonSet;
  6. FROM System  IMPORT AX,BX,CX,DX,ES,DS,SI,DI,Trap,GetVector;
  7.  
  8. PROCEDURE CheckMouse() : BOOLEAN;
  9. VAR maus : ADDRESS;
  10. BEGIN
  11.  GetVector(033H,maus);
  12.  IF (maus=NIL) THEN
  13.   RETURN(FALSE);
  14.  END (* IF *);
  15.  AX := 0;
  16.  Trap(033H);
  17.  IF (AX=0) THEN
  18.   RETURN(FALSE);
  19.  END (* IF *);
  20.  RETURN(TRUE);
  21. END CheckMouse;
  22.  
  23. PROCEDURE MouseOn();
  24. BEGIN
  25.  IF (gdos^.mouseLock=0) THEN
  26.   AX := 1;
  27.   Trap(033H);
  28.  END (* IF *);
  29.  gdos^.mouseLock := gdos^.mouseLock + 1;
  30. END MouseOn;
  31.  
  32. PROCEDURE MouseOff();
  33. BEGIN
  34.  IF (gdos^.mouseLock=1) THEN
  35.   AX := 2;
  36.   Trap(033H);
  37.  END (* IF *);
  38.  gdos^.mouseLock := gdos^.mouseLock - 1;
  39. END MouseOff;
  40.  
  41. PROCEDURE WaitForKey();
  42. BEGIN
  43.  AX := 0;
  44.  Trap(016H);
  45. END WaitForKey;
  46.  
  47. PROCEDURE WaitForClick();
  48. VAR buttons : CARDINAL;
  49. BEGIN
  50.  REPEAT
  51.   AX := 3;
  52.   Trap(033H);
  53.  UNTIL (BX<>0);
  54.  REPEAT
  55.   AX := 3;
  56.   Trap(033H);
  57.  UNTIL (BX=0);
  58. END WaitForClick;
  59.  
  60. PROCEDURE GetMouseData(msg : SystemMessagePtr);
  61. VAR buttons : MouseButtonSet;
  62.     x,y     : CARDINAL;
  63. BEGIN
  64.  ASM
  65.   MOV AX,3
  66.   INT 33H
  67.   MOV x,CX
  68.   MOV y,DX
  69.   MOV buttons,BX
  70.  END (* ASM *);
  71.  msg^.mouseX := x;
  72.  msg^.mouseY := y;
  73.  msg^.mouseButtons := buttons;
  74. END GetMouseData;
  75.  
  76. END Mouse.
  77.